package com.alameda.common.commonpent.commonback.mapper;

import org.apache.ibatis.annotations.*;

import java.util.HashMap;
import java.util.List;

/**
 * 通用后端组件 持久层
 *
 * @author Lv
 * @date 2024/2/19
 */
@SuppressWarnings("all")
@Mapper
public interface CommonBackMapper<T> {
    /**
     * 获取详情
     *
     * @param selectFiled 查询字段
     * @param tableName   表名称
     * @param where       条件
     * @return
     */
    @Select("select ${selectFiled} from ${tableName} where 1 = 1 ${where} ")
    @ResultType(HashMap.class)
    HashMap get(@Param("selectFiled") String selectFiled, @Param("tableName") String tableName, @Param("where") String where);

    /**
     * 批量删除
     *
     * @param tableName 表名称
     * @param where     条件
     * @return
     */
    @Update("update ${tableName} set delete_flag = 1 where 1 = 1 ${where}")
    @ResultType(Integer.class)
    Integer remove(@Param("tableName") String tableName, @Param("where") String where);

    /**
     * 执行查询sql操作 无逻辑删除拦截处理
     *
     * @param executeSql 查询语句
     * @return
     */
    @Select("${executeSql}")
    @ResultType(HashMap.class)
    List<HashMap> executeFind(@Param("executeSql") String executeSql);

    /**
     * 执行删除sql操作 物理删除
     *
     * @param executeSql 删除语句
     * @return
     */
    @Delete("${executeSql}")
    @ResultType(Integer.class)
    Integer executeDelete(@Param("executeSql") String executeSql);
}
